package com.bestdreamer.tcp.demo2;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class ServerThread implements Runnable {

    // 定义当前线程所处理的 Socket
    Socket s = null;
    // 该线程所处理的 Socket 对应的输入流
    BufferedReader br = null;
    public ServerThread(Socket s)throws IOException{
        this.s = s;
        // 初始化该 Socket 对应的输入流
        br = new BufferedReader(new InputStreamReader(s.getInputStream()));
    }

    @Override
    public void run() {
        try{
            String content = null;
            // 采用循环不断地从 Socket 中读取客户端发送过来的数据
            while((content = readFromClient()) != null){
                // 遍历 socketList 中的每个 Socket
                // 将读到的内容向每个 Socket 发送一次
                for(Socket s : MyServer.sockets){
                    PrintWriter ps = new PrintWriter(s.getOutputStream());
                    ps.println();
                }
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }

    // 定义读取客户端数据的方法
    private String readFromClient(){
        try{
            return br.readLine();
        }
        // 如果捕获到异常，则表明该 Socket 对应的客户端已经关闭
        catch(IOException e){
            // 删除该 Socket
            MyServer.sockets.remove(s);
        }
        return null;
    }
}
